package com.sxt.core.utils;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

import com.sxt.core.proxy.MethodInvoke;
/**
 * 扩展cup的接口编程能力
 * @author Liushuangxi
 *
 */
public class ProxyFactoryUtil {
   
	public static Object createProxy(Class<?> interfaces,MethodInvoke methodInvoke) {
		return Proxy.newProxyInstance(
					ProxyFactoryUtil.class.getClassLoader(),
					new Class<?>[] {interfaces},
					new InvocationHandler() {
						
						@Override
						public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
							String name = method.getName();
							if("toString".equals(name)) {
								return interfaces+"$Proxy";
							}
							if("hashCode".equals(name)) {
								return -1 ;
							}
							// rpc  // 远程调用
							// mybaits // 发送sql 语句，并处理他的结果
							return methodInvoke.invoke(method,args);
						}
					})	;
	}
}
